package edu.yang;
import java.io.*;

import org.apache.log4j.jmx.LoggerDynamicMBean;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.codehaus.plexus.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonatype.inject.Parameters;

import java.util.ArrayList;
import java.util.List;

/**
 *
 */

@Mojo(name="patch", defaultPhase = LifecyclePhase.PACKAGE)
public class MyPatch extends AbstractMojo {

    private static Logger logger = LoggerFactory.getLogger(MyPatch.class);

    @Parameter
    private String exportFile;

    @Parameter
    private String targetDir;

    @Parameter
    private String invalidContent;

    public void execute() throws MojoExecutionException, MojoFailureException {
        if(StringUtils.isEmpty(exportFile)){
            System.out.println("未指定exportFile！");
            return ;
        }
        File file = new File(exportFile);
        if(!file.exists()){
            System.out.println("找不到此文件名对应的文件！");
            return ;
        }
        List<String> fileNames = readFileNames(file);
        for(String fileName : fileNames){
            System.out.println(fileName);
        }
    }

    private List<String> readFileNames(File file)  {
        FileInputStream fis = null;
        List<String> fileNames = new ArrayList<String>();
        try {
             fis = new FileInputStream(file);
             BufferedReader br = new BufferedReader(new InputStreamReader(fis, "utf-8"));
             String line;
             while ((line = br.readLine()) != null){
                 if(line.indexOf("main") != -1){
                     if(line.indexOf("application.properties") != -1){
                         System.out.println("！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！application.properties文件有修改请比对处理！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！");
                         continue;
                     }
                     if(!StringUtils.isBlank(invalidContent)){
                         line = line.replace(invalidContent, "");
                     }
                     fileNames.add(line);
                 }else if(line.indexOf(".pom") != -1){
                     System.out.println("！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！pom文件有修改请查看是否需要增加jar文件！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！");
                 }
             }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            logger.error(file.getAbsolutePath() +"未找到文件");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            logger.error(file.getName()+"中出现不支持UTF-8编码的内容");
        } catch (IOException e) {

            logger.error("读取文件内容异常，请检查是否为txt文件");
        }
        return fileNames;
    }
}
